/**
 * 
 */
package com.yidu.drug.action;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.yidu.drug.common.Page;
import com.yidu.drug.common.Tools;
import com.yidu.drug.model.DrugManagerModel;
import com.yidu.drug.model.FilialeModel;
import com.yidu.drug.model.PolicyModel;
import com.yidu.drug.service.DrugManagerService;
import com.yidu.drug.service.FilialeService;
import com.yidu.drug.service.PolicyService;

/**
 * 政策action
 * @author 吴淑侦
 * @date 2018年8月13日 上午8:57:55
 * @version 1.0
 */
@Controller
@RequestMapping("/policy")
public class PolicyAction {

	//政策service
	@Resource
	private PolicyService policyService;
	//分公司service
	@Resource
	private FilialeService filialeService;
	//用户service
	@Resource
	private DrugManagerService drugManagerService;
	
	/**
	 * 显示所有
	 * @param page
	 * @param limit
	 * @param policyName
	 * @param policyComment
	 * @return
	 * @throws UnsupportedEncodingException
	 */
	@RequestMapping("/findAll")
	@ResponseBody
	public Map<String, Object> findAll(String page,String limit,String policyName,String policyComment,String filId) throws UnsupportedEncodingException{
		/*
		 * 分页
		 */
		Page pages = new Page();
		pages.setPage(Integer.valueOf(page));
		pages.setRows(Integer.valueOf(limit));
		
		//政策模型
		PolicyModel policyModel = new PolicyModel();
		//分公司id
		policyModel.setFilId(filId);
		//政策名称
		policyModel.setPolicyName(policyName);
		//政策内容
		policyModel.setPolicyComment(policyComment);
		//政策分页
		policyModel.setPage(pages);
		
		//查询所有
		List<PolicyModel> list = policyService.findAll(policyModel);
		for (PolicyModel policyModel2 : list) {
			//政策时间赋值
			Date time=policyModel2.getPolicyTime();
			//时间转换类型（yyyy-MM-dd HH:mm:ss）
			DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	        //时间转换的方法
	        String tsStr = sdf.format(time.getTime());
	        //政策时间
	        policyModel2.setTime(tsStr);
		}
		//查询总行数
		Long count = policyService.findRows(policyModel);
		
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("code", 0);
		map.put("msg", "");
		map.put("count", count);
		map.put("data", list);
		return map;	
	}
	
	/**
	 * 删除(修改状态)
	 * @param filId
	 * @return
	 */
	@RequestMapping("/updateById")
	@ResponseBody
	public String updateById(String policyId){
		//根据政策id修改政策状态
		return policyService.updateById(policyId);
	}
	
	/**
	 * 增加
	 * @param policyModel
	 * @param session
	 * @throws UnsupportedEncodingException 
	 */
	@RequestMapping("/add")
	public void add(PolicyModel policyModel,HttpSession session) throws UnsupportedEncodingException{
		//随机生成政策id
		String policyId = UUID.randomUUID().toString();
		Timestamp policyTime = new Timestamp(new Date().getTime());
		//session取到用户
		DrugManagerModel us = (DrugManagerModel) session.getAttribute("manager");
		//用户id
		String id = us.getManId();
		System.out.println(id);
		//分公司名称
		String filName = "";
		//公司名称
		String companyName = "";
		
		//根据id查询用户
		DrugManagerModel drugManagerModel = drugManagerService.findByUsId(id);
		/*
		 * 如果查到用户所在的分公司id不为空
		 */
		if(drugManagerModel.getFilId()!=null){
			//根据用户所在的分公司查询分公司
			FilialeModel filiale = filialeService.findById(drugManagerModel.getFilId());
			//政策公司为分公司的分公司名称
			policyModel.setPolicyCompany(filiale.getFilName());
		}
		//政策id
		policyModel.setPolicyId(policyId);
		//分公司id(用户所在分公司id)
	 	policyModel.setFilId(drugManagerModel.getFilId());
	 	//政策发布时间
		policyModel.setPolicyTime(policyTime);
		//政策状态（有效）
		policyModel.setIsva("有效");
		//政策发布人（当前用户）
		policyModel.setPolicyPerson(drugManagerModel.getManUser());
		
		//分割分公司ids,把数据存放到数组里
		String[] str = policyModel.getFilIds().split(",");
		/*
		 * 循环取出数组
		 */
		for(int i=0;i<str.length;i++){
			//如果数组不为空
			if(!Tools.isEmpty(str[i])){
				//根据数组查询分公司
				FilialeModel filialeModel = filialeService.findById(str[i]);
				//分公司名称赋值
				filName = filialeModel.getFilName();
				//如果公司名称为空
				if(companyName==""){
					//公司名称为分公司名称
					companyName = filName;
				}else{
					//公司名称为公司名称加上分号加上分公司名称
					companyName = companyName+","+filName;
				}
			}
		}
		//政策公司名称
		policyModel.setCompanyName(companyName);
		//增加政策
		policyService.save(policyModel);
		
	}
	
	/**
	 * 显示修改页面
	 * @param request
	 * @param response
	 * @param session
	 * @param policyId
	 * @return
	 * @throws IOException
	 */
	@RequestMapping("/showUpdate")
	@ResponseBody
	public PolicyModel showUpdate(HttpServletRequest request,HttpServletResponse response,HttpSession session,String policyId) throws IOException{
		//根据政策id查询政策
		PolicyModel policyModel = policyService.findById(policyId);
		return policyModel;
	}
	
	/**
	 * 修改的方法
	 * @param policyModel
	 * @throws UnsupportedEncodingException
	 */
	@RequestMapping("/update")
	public void update(PolicyModel policyModel) throws UnsupportedEncodingException{
		Timestamp policyTime = new Timestamp(new Date().getTime());
		//分工司名称
		String filName = "";
		//公司名称
		String companyName = "";
		
		//政策时间
		policyModel.setPolicyTime(policyTime);
		
		//分割分公司ids,把数据存放到数组里
		String[] str = policyModel.getFilIds().split(",");
		/*
		 * 循环取出数组
		 */
		for(int i=0;i<str.length;i++){
			//如果数组不为空
			if(!Tools.isEmpty(str[i])){
				//根据数组查询分公司
				FilialeModel filialeModel = filialeService.findById(str[i]);
				//分公司名称赋值
				filName = filialeModel.getFilName();
				//如果公司名称为空
				if(companyName==""){
					//公司名称为分公司名称
					companyName = filName;
				}else{
					//公司名称为公司名称加上分号加上分公司名称
					companyName = companyName+","+filName;
				}
			}
		}
		//政策的公司名称
		policyModel.setCompanyName(companyName);
		//修改政策
		policyService.update(policyModel);
	}
	
	/**
	 * 查询
	 * @param policyModel
	 * @param policyId
	 * @return
	 */
	@RequestMapping("/findByPolicyId")
	@ResponseBody
	public Map<String,Object> findByPolicyId(HttpSession session, PolicyModel policyModel,String policyId){
		//政策id
		policyModel.setPolicyId(policyId);
		//根据政策查询
		List<PolicyModel> list= policyService.findByPolicyId(policyModel);
		
		for (PolicyModel policyModel2 : list) {
			//政策时间赋值
			Date time=policyModel2.getPolicyTime();
			//时间转换类型（yyyy-MM-dd HH:mm:ss）
			DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	        //时间转换的方法
	        String tsStr = sdf.format(time.getTime());
	        //政策时间
	        policyModel2.setTime(tsStr);
		}
		
		Map<String,Object> map = new HashMap<String,Object>();
		//映射list集合
		map.put("list", list);
		
		return map;
	}
	
}
